﻿@using DatabaseLibrary;
@* Quitar esta sección si se utilizan agrupaciones *@
@section Scripts {
    <script src="~/Scripts/jquery.validate.min.js"></script>
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
}

@{
    Layout = "~/_SiteLayout.cshtml";
    Page.Title = "Registrar candidato";

    if (!WebSecurity.IsAuthenticated)
    {
        Response.Redirect("../Account/login.cshtml");        
    }

    // Inicializar variables de página generales    
    var Cbo_grupo_electoral = "";
    var Cbo_eleccion = "";

    // Validación de la instalación
    Validation.RequireField("Cbo_grupo_electoral", "Debe seleccionar un grupo electoral");
    Validation.RequireField("Cbo_eleccion", "Debe seleccionar un tipo de elección");    

    // Si esta es una solicitud  POST , valide y procese los datos
    if (IsPost) {
        AntiForgery.Validate();
        Cbo_grupo_electoral = Request.Form["Cbo_grupo_electoral"];
        Cbo_eleccion = Request.Form["Cbo_eleccion"];

        if (Cbo_grupo_electoral.IsEmpty() || Cbo_grupo_electoral.ToString().Trim() == "0")
        {
            ModelState.AddError("Cbo_grupo_electoral", "Seleccione el estado para grupo electoral");
        }

        if (Cbo_eleccion.IsEmpty() || Cbo_eleccion.ToString().Trim() == "0")
        {
            ModelState.AddError("Cbo_eleccion", "Seleccione un tipo de elección");
        }

        if (Validation.IsValid() && ModelState.IsValid)
        {            

           Candidato Obj_candidato = new Candidato();
           Obj_candidato.Objcandidato.id_usuario = int.Parse(Session["id_usuario"].ToString());                      
           var lista_validadora = Obj_candidato.consultar(1);

            if (lista_validadora == null || lista_validadora.Count == 0)
            {
                Obj_candidato.Objcandidato.id_grupo_electoral = int.Parse(Cbo_grupo_electoral.ToString());
                Obj_candidato.Objcandidato.id_eleccion = int.Parse(Cbo_eleccion.ToString());
                Obj_candidato.Objcandidato.id_usuario = int.Parse(Session["id_usuario"].ToString());
                Obj_candidato.crear();

                if (!User.IsInRole("Candidato"))
                {
                    Roles.AddUserToRole(User.Identity.Name, "Candidato");
                }

                Response.Redirect("ConsultarCandidato.cshtml");                                  
            } 
            else {
                ModelState.AddFormError("Ya esta registrado como candidato para la elección.");
            }
        }        
}
}

@if (User.IsInRole("Admin"))
{
    ModelState.AddError("errorGeneral", "El Administrador: " + User.Identity.Name + " NO se puede postular como candidato.");
    @Html.ValidationMessage("errorGeneral")
}
else
{  
        <form method="post">
            @AntiForgery.GetHtml()
            @* Si existe al menos un error de validación, informar al usuario *@
            @Html.ValidationSummary("No se registro como candidato. Corrija los errores e inténtelo de nuevo.", excludeFieldErrors: true, htmlAttributes: null)

            @{
				bool estado = true;
                GrupoElectoral Obj_GrupoElectoral = new GrupoElectoral();
                Obj_GrupoElectoral.ObjGrupoElectoral.estado = estado;

                List<grupo_electoral> mylista_info = new List<grupo_electoral>();
                mylista_info = Obj_GrupoElectoral.consultar(1);

                Candidato Obj_candidatos = new Candidato();
                Obj_candidatos.Objeleccion.id_empresa = int.Parse(Session["id_empresa"].ToString());
                Obj_candidatos.Objeleccion.estado = estado;

                List<eleccion> mylista_info_eleccion = new List<eleccion>();
                mylista_info_eleccion = Obj_candidatos.consultar_eleccion(1);               
                 
            }
            <fieldset>
                <legend>Formulario de registro Grupo electoral</legend>
                <ol>
                    <li class="email">
                        <label for="Cbo_grupo_electoral" @if(!ModelState.IsValidField("Cbo_grupo_electoral")){<text> class="error-label" </text> }>Grupo electoral</label>
                        <select id="Cbo_grupo_electoral" name="Cbo_grupo_electoral" @Validation.For("Cbo_grupo_electoral")>               
                            <option value="0">Seleccione</option>                                                        
                            @foreach (var propiedad in mylista_info)
                             {
                                 if (!IsPost)
                                 {
                                    <option value="@propiedad.id_grupo_electoral ">@propiedad.nombre</option>                                
                                 } else 
                                 {              
	                                 if (Request["Cbo_grupo_electoral"].ToString().Trim() == propiedad.id_grupo_electoral.ToString().Trim())                       
                                     {
                                        <option value="@propiedad.id_grupo_electoral " selected="selected">@propiedad.nombre</option>                                
                                     }
                                     else
                                     {
                                        <option value="@propiedad.id_grupo_electoral ">@propiedad.nombre</option>                                
                                     }
                                 }
                             }
                            }                           
                        </select>
                        @* Escribir los errores de validación del correo electrónico en la página *@
                        @Html.ValidationMessage("Cbo_grupo_electoral")
                    </li>
                    <li class="email">
                        <label for="Cbo_eleccion" @if(!ModelState.IsValidField("Cbo_eleccion")){<text> class="error-label" </text>}>Elección</label>
                        <select id="Cbo_eleccion" name="Cbo_eleccion" @Validation.For("Cbo_eleccion")>
                            <option value="0">Seleccione</option>
                            @foreach (var propiedad in mylista_info_eleccion)
                             {
                                 if (!IsPost)
                                 {
                                    <option value="@propiedad.id_eleccion ">@propiedad.titulo</option>                                
                                 } else 
                                 {              
	                                 if (Request["Cbo_eleccion"].ToString().Trim() == propiedad.id_eleccion.ToString().Trim())                       
                                     {
                                        <option value="@propiedad.id_eleccion " selected="selected">@propiedad.titulo</option>                                
                                     }
                                     else
                                     {
                                        <option value="@propiedad.id_eleccion ">@propiedad.titulo</option>                                
                                     }
                                 }
                             }
                                                                                 
                        </select>
                        @* Escribir los errores de validación del correo electrónico en la página *@
                        @Html.ValidationMessage("Cbo_eleccion")
                    </li>
                </ol>
                <input type="submit" value="Guardar" />
            </fieldset>
        </form>
}
